package org.nobject.common.lang;

import java.math.BigDecimal;

/**
 * 算法工具类
 *
 * @author bianrongjun
 * @version 1.0
 */
public class MathUtils {
	
	/**
	 * 判断数值是否在范围以内
	 * 
	 * @param num 目标值
	 * @param sNum 小数
	 * @param bNum 大数
	 * @param boundary 是否包含边界
	 */
	public static boolean between(int num, int sNum, int bNum, boolean boundary) {
		return (boundary && (num >= sNum && num <= bNum)) || (!boundary && (num > sNum && num < bNum));
	}

	/**
	 * 判断数值是否在范围以内
	 * 
	 * @param num 目标值
	 * @param sNum 小数
	 * @param bNum 大数
	 */
	public static boolean between(int num, int sNum, int bNum) {
		return between(num, sNum, bNum, true);
	}
	
	/** 
	 * 乘
	 * @param x1
	 * @param x2
	 */
	public static double multiply(double x1,double x2){
		return new BigDecimal(x1).multiply(new BigDecimal(x2)).doubleValue();
	}
	
	/** 
	 * 加
	 * @param x1
	 * @param x2
	 */
	public static double add(double x1,double x2){
		return new BigDecimal(x1).add(new BigDecimal(x2)).doubleValue();
	}
	
	/** 
	 * 除
	 * @param x1
	 * @param x2
	 */
	public static double divide(double x1,double x2){
		return divide(x1, x2, 2);
	}
	
	/** 
	 * 除
	 * @param x1
	 * @param x2
	 * @param scale
	 */
	public static double divide(double x1,double x2,int scale){
		return new BigDecimal(x1).divide(new BigDecimal(x2),scale,BigDecimal.ROUND_HALF_UP).doubleValue();
	}
}
